#ifndef ATCOMMAND_H
#define ATCOMMAND_H

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

// 类型定义：AT指令处理函数的原型
typedef void (*AtCmdHandler)(const char*);

// 结构体定义：保存AT指令和其处理函数的注册信息
typedef struct {
    char* cmd;           // AT指令关键字（不包含"AT+"）
    AtCmdHandler handler; // 处理该AT指令的函数指针
} AtCmdRegistry;

// 函数声明：用于注册AT指令
int registerAtCommand(const char* cmd, AtCmdHandler handler);

// 函数声明：解析传入的AT指令字符串
void parseAtCommand(const char* input);

// 函数声明：清理注册的AT指令和释放内存
void cleanupAtCommands(void);

// 示例处理函数 调用测试
int AtCommand_test();

// 函数定义:从一段字符串中解析出双引号中的字符串并将这个字符串复制给一个数组,并返回双引号结尾的指针。findQuoteStr数组空间需要注意防止溢出
char *extractQuotedString(const char* input, char* findQuoteStr);
#endif // ATCOMMAND_H